package pl.gettoknowme.mobile.android.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Różne pomocnicze metody
 * @author Michał Kołodziejski
 */
public class MiscUtils {
    
    /**
     * Zwraca skróconą formę numeru telefonu. (bez "+48", "0048", "0")
     * @param number numer telefonu
     * @return skrócona forma numeru telefonu
     */
    public static String shortenPhoneNumber(String number){
        if(number.startsWith("+")){
            number = number.substring(3);
        }
        if(number.startsWith("00")){
            number = number.substring(4);
        }
        if(number.startsWith("0")){
            number = number.substring(1);
        }
        
        return number;
    }

    /**
     * Zwraca zahashowany algorytmem SHA-1 ciąg znaków
     * @param toHash ciąg znaków do wyliczenia skrótu
     * @return hash
     */
    public static String hashString(String toHash){
        MessageDigest md = null;
        
        try {
            md = MessageDigest.getInstance("SHA-1");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
        
        String hashed = bytesToHex(md.digest(toHash.getBytes()));
        LoggingUtil.d(md, "toHash: " + toHash + ", hashed: " + hashed);
        
        return hashed;
    }
    
    /**
     * Przekształca tablicę bajtów do tekstowej postaci szesnastkowej
     * @param b wejściowa tablica bajtów
     * @return postać tekstowa hex
     */
    private static String bytesToHex(byte[] b) {
       char hexDigit[] = {'0', '1', '2', '3', '4', '5', '6', '7',
                          '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
       StringBuffer buf = new StringBuffer();
       for (int j=0; j<b.length; j++) {
          buf.append(hexDigit[(b[j] >> 4) & 0x0f]);
          buf.append(hexDigit[b[j] & 0x0f]);
       }
       return buf.toString();
    }
}
